package java_0228;


import java.util.Arrays;
import java.util.concurrent.ThreadLocalRandom;

public class HeapTest {
    public static void main(String[] args) {
        //堆化
        int[] data={15,17,19,13,22,16,28,30,41,62};
        MaxHeap heap=new MaxHeap(data);
        System.out.println(heap);


//        int[] data={15,17,19,13,22,16,28,30,41,62};
//        MaxHeap heap=new MaxHeap();
//        for (int i:data) {
//            heap.add(i);
//        }
//        System.out.println(heap);

//        int[] data=new int[100000];
//        //生成随机数
////        ThreadLocalRandom.current();//取得一个当前类的对象-工厂设计模式
////        也就是说在这不直接new，而是通过一个方法取得一个实例
//        ThreadLocalRandom random=ThreadLocalRandom.current();
//        for (int i = 0; i < data.length; i++) {
//            //生成10w个从0开始，到整形最大值的一个随机数
//            data[i]=random.nextInt(0,Integer.MAX_VALUE);
//        }
//        //将数组构建成堆
//        MaxHeap heap=new MaxHeap();
//        for (int i :data) {
//            heap.add(i);
//        }
//        //从0开始不断取出堆中最大值放入数组并验证是否是非递减序列
//        for (int i = 0; i < data.length; i++) {
//            data[i]=heap.extractMax();
//        }
//        System.out.println(isSorteds(data));



//        MaxHeap heap=new MaxHeap();
//        int[] arr={62,41,30,28,16,13,22,19,17,15};
//        for (int i:arr) {
//            heap.add(i);
//        }
////        heap.add(50);
////        System.out.println(heap);
//        for (int i = 0; i < arr.length; i++) {
//            //不断从堆中取出最大值
//            arr[i]=heap.extractMax();
//        }
//        System.out.println(Arrays.toString(arr));

    }
    //验证取出的值是否是非递增序列
    public static boolean isSorteds(int[] arr){
        for (int i = 0; i < arr.length-1; i++) {
            if (arr[i]<arr[i+1]){
                System.out.println("error");
                return false;
            }
        }
        return true;
    }
}
